package com.meeting.project.business.record.mapper;

import java.util.List;

import com.meeting.project.business.record.domain.SeriesData;
import com.meeting.project.business.record.domain.SignInRecord;

import org.apache.ibatis.annotations.Param;

/**
 * 人员签到信息Mapper接口
 * 
 * @author llmaoa
 * @date 2025-08-05
 */
public interface SignInRecordMapper 
{
    /**
     * 查询人员签到信息
     * 
     * @param id 人员签到信息主键
     * @return 人员签到信息
     */
    public SignInRecord selectSignInRecordById(Long id);

    /**
     * 查询人员签到信息列表
     * 
     * @param signInRecord 人员签到信息
     * @return 人员签到信息集合
     */
    public List<SignInRecord> selectSignInRecordList(SignInRecord signInRecord);

    /**
     * 新增人员签到信息
     * 
     * @param signInRecord 人员签到信息
     * @return 结果
     */
    public int insertSignInRecord(SignInRecord signInRecord);

    /**
     * 修改人员签到信息
     * 
     * @param signInRecord 人员签到信息
     * @return 结果
     */
    public int updateSignInRecord(SignInRecord signInRecord);

    /**
     * 删除人员签到信息
     * 
     * @param id 人员签到信息主键
     * @return 结果
     */
    public int deleteSignInRecordById(Long id);

    /**
     * 批量删除人员签到信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSignInRecordByIds(String[] ids);

    /**
     * 根据请假分类统计
     * @param meetingId
     * @return
     */
    List<SeriesData> statisticsByLeaveType(Long meetingId);

    List<SeriesData> statisticsAllByLeaveType();

    /**
     * 根据条件查询人员签到信息
     * @param meetingId 会议号
     * @param realname 真实姓名
     * @param phone 手机号
     * @param leaveType 请假类型
     * @return
     */
    SignInRecord selectPersonSignInRecordList(@Param("meetingId") Long meetingId, @Param("realname")String realname, @Param("phone")String  phone, @Param("leaveType")Integer leaveType);

    /**
     * 根据会议ID查询人员签到信息
     * @param meetingIds
     * @return
     */
    List<SignInRecord> selectSignInRecordListByMeetingIds(List<Long> meetingIds);
}
